扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
foreach($cart as $pid => $quantity) { $stmt = db2_prepare($conn, "SELECT Name, Price FROM sqlproduct WHERE Pid = ?"); db2_execute($stmt, array($pid)); if($stmt) { list($prodName, $prodPrice) = db2_fetch_array($stmt); ?> | ||
Remove |
$ |
$stmt = db2_prepare($conn, "VALUES (NEXT VALUE FOR POid)"); db2_execute($stmt); list($POid) = db2_fetch_array($stmt); foreach($cart as $pid => $quantity) { $xquery = $t/product/description/price/text()'; $stmt = db2_prepare($conn, "SELECT XMLSERIALIZE(XMLQUERY($xquery' PASSING BY REF T.DESCRIPTION AS \"t\" RETURNING SEQUENCE) AS VARCHAR(8)) FROM xmlproduct AS t WHERE Pid = ?"); db2_execute($stmt, array($pid)); list($price) = db2_fetch_array($stmt); |
$PO .= " } |
$stmt = db2_prepare($conn, "INSERT INTO xmlporder (POid, POrder) VALUES (?, ?)"); db2_execute($stmt, array($POid, $PO)); |
采购订单(PO)在关系数据库中存储为 CLOB(而不分割)。完整存储的好处是任何由于采购订单的变化(如运输等其他信息)而发生的模式演化都不会有什么影响。将 PO 存储为 CLOB,则可以在应用程序代码中使用 DOM 来检索相关信息。但是,关系存储的简单和模式演化的好处会被查询性能的降低所抵消,当我们尝试创建采购历史记录报告时会发现这一点。
发票
发票在付帐时返回给客户。该发票是通过查询刚刚创建的采购订单而生成的。因为采购订单不包含详细产品信息,所以需要进行单独查询,以便从产品表中查找产品详细信息。
图 9. 发票
DB2 Viper
$xquery = for $po in $t/purchaseOrder let $sum := for $item in $po/items/item return $item/@quantity * $item/@price let $items := for $item in $po/items/item |
let $name := for $i in db2-fn:xmlcolumn("XMLPRODUCT.DESCRIPTION")/product where $i/@pid = $item/@pid return $i/description/name/text() return | ||
{$name} |
{xs:string($item/@quantity)} |
${xs:string($item/@price)} |
Total | ${sum($sum)} |
濠碘€冲€归悘澶愬箖閵娾晜濮滈悽顖涚摃閹烩晠宕氶崶鈺傜暠闁诡垰鍘栫花锛勬喆椤ゅ弧濡澘妫楅悡娆撳嫉閳ь剟寮0渚€鐛撻柛婵呮缁楀矂骞庨埀顒勫嫉椤栨瑤绻嗛柟顓у灲缁辨繈鏌囬敐鍕杽閻犱降鍨藉Σ鍕嚊閹跺鈧﹦绱旈幋鐐参楅柡鍫灦閸嬫牗绂掔捄铏规闁哄嫷鍨遍崑宥夋儍閸曨剚浠樺ù锝嗗▕閳ь剚鏌ㄧ欢鐐寸▕鐎b晝顏遍柕鍡嫹